package com.hedl.practice.diyJava.encryptionandsecurity.bouncy_castle.test;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Security;

public class Main {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        //注册BouncyCastle:
        Security.addProvider(new BouncyCastleProvider());
        // 按名称正常调用:
        MessageDigest ripeMD160 = MessageDigest.getInstance("RipeMD160");
        ripeMD160.update("HelloWorld".getBytes(StandardCharsets.UTF_8));
        byte[] digest = ripeMD160.digest();
        System.out.println(new BigInteger(1, digest).toString(16));

        /**
         * 注册BouncyCastle是通过下面的语句实现的：
         *      Security.addProvider(new BouncyCastleProvider());
         *      注册只需要在启动时进行一次，后续就可以使用BouncyCastle提供的所有哈希算法和加密算法。
         *
         * 小结：
         *      BouncyCastle是一个开源的第三方算法提供商；
         *      BouncyCastle提供了很多Java标准库没有提供的哈希算法和加密算法；
         *      使用第三方算法前需要通过Security.addProvider()注册。
         */
    }
}
